﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Input;

namespace lumo.input
{

    /// <summary>
    /// Simple button interface.
    /// </summary>
    public interface IInputObject : IUpdatableOnce
    {

        /// <summary>
        /// Get the Type of the Input Object.
        /// </summary>
        /// <returns></returns>
        InputType GetInputType();

        /// <summary>
        /// Get the ID Atacched to the object.
        /// </summary>
        /// <returns></returns>
        long GetInputID();

        /// <summary>
        /// Check if the button was triggered.
        /// </summary>
        /// <returns>True if the button is triggered.</returns>
        bool Pressed { get; }

        /// <summary>
        /// Check if the button was triggered.
        /// </summary>
        /// <returns>True if the button is triggered.</returns>
        bool Triggered { get; }

        /// <summary>
        /// Check if the button is used for repeated input.
        /// </summary>
        /// <returns>Check if the button is used for repeated input.</returns>
        bool Repeated { get; }

        /// <summary>
        /// Check if the button was triggered.
        /// </summary>
        /// <returns>True if the button is triggered.</returns>
        bool Released { get; }

        /// <summary>
        /// Access the repeat time for current object.
        /// </summary>
        float RepeatTime { get; set; }

        /// <summary>
        /// Access the repeat time for current object.
        /// </summary>
        float RepeatDelay { get; set; }
    }
}
